When a user remotely accesses an application configured for mouse-and-keyboard based commands, the user controls a particular server machine remotely from his or her computing device. This type of interaction is commonly referred to as a “remote” session. Throughout a remote session, the video output data generated at the server machine is routed to the user's computing device, where such video data includes a user interface (UI) of an operating system and/or applications executing on the host machine. Conversely, user input data received at the user's computing device is routed to the server machine, where the operating system and/or applications interpret the routed input data as if the input data was received locally at the server machine.
In remote sessions, it is not uncommon for users on mobile devices to use virtual touch pads to perform mouse actions. Virtual touch pads present UIs akin to physical touch pads on laptop computers. Touch gestures (e.g., tapping or dragging a finger) performed on a virtual touch pad are translated to mouse commands and routed to the host machine as such. However, on small devices, operations which typically require two fingers to perform on the virtual touch pad may become difficult, if not impossible, to perform. For example, highlighting and drag operations are typically performed by holding down a left-click button of the virtual touch pad while simultaneously moving a finger across the virtual touch pad's touch area. Such drag operations require two fingers to perform, and become cumbersome on small mobile devices such as mobile phones.
One approach for performing highlighting and drag operations without holding down the left-click button relies on “click lock,” in which the left-click button is maintained in a mouse button down state by software in response to a user's button press that lasts for at least a given time duration (e.g., 2 seconds). However, in remote sessions, there is often delay between the client device and the desktop running on the host machine, making it difficult for a user to distinguish whether the left-click button has been pressed for a particular time duration. Moreover, “tap to click,” a common feature of virtual touch pads that permits a click to be performed by tapping on a pad's touch area, may break drag operations despite click lock, as the click resulting from such a tap typically ends the continuous button click provided by software.